在嵌入式系統中需要進行精確量測一段程式碼的執行時間或者產生精確的時間延遲。這時候,MCU的計時器就可以派上用場了。
程式碼範例(使用C語言):
#include <avr/io.h>
#include <avr/interrupt.h>
// 定義計時器計數的初始值
#define TIMER_INITIAL_VALUE 0
// 定義計時器計數的目標值
#define TIMER_TARGET_VALUE 10000
// 計時器中斷處理函數
ISR(TIMER0_COMPA_vect) {
// 在此處理計時器中斷,例如:停止計時、記錄時間、執行特定任務等操作
}
int main(void) {
// 初始化計時器設置
TCCR0A |= (1 << WGM01); // 使用CTC模式
OCR0A = TIMER_TARGET_VALUE; // 設定計數目標值
TIMSK0 |= (1 << OCIE0A); // 啟用計時器中斷
sei(); // 啟用全域中斷
// 啟動計時器,選擇時脈源(這裡使用內部8MHz時鐘)
TCCR0B |= (1 << CS00) | (1 << CS01);
// 主程式
while (1) {
// 在此執行其他任務
}
return 0;
}